﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;

namespace QuanLyNhaHang
{
    public partial class QLNguyenVatLieu : Form
    {
        private string old_ma = null;
        public QLNguyenVatLieu()
        {
            InitializeComponent();
        }

        private void buttonThem_Click(object sender, EventArgs e)
        {
            add();
        }

        private void add()
        {
            var obj = new DTONguyenVatLieu()
            {
                MaLoai = (string)comboBoxMaLoai.SelectedValue,
                TenNVL = textBoxTenNVL.Text.Trim(),
                MaNVL = textBoxMaNVL.Text.Trim(),
            };
            old_ma = null;
            if (check(obj))
            {                
                if (BUSNguyenVatLieu.add(obj) > 0)
                {
                    MessageBox.Show("Thêm mới thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    reloadDatagrid();
                }
                else
                {
                    MessageBox.Show("Thêm mới thất bại", "Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private bool check(DTONguyenVatLieu obj)
        {
            StringBuilder str = new StringBuilder();

            if (string.IsNullOrEmpty(obj.MaNVL))
            {
                str.AppendLine("Mã không được bỏ trống.");
            }

            if (string.IsNullOrEmpty(obj.TenNVL))
            {
                str.AppendLine("Tên không được bỏ trống.");
            }

            if (BUSNguyenVatLieu.checkDuplicate(obj, old_ma))
            {
                str.AppendLine("Mã không được trùng với mã đã có trong danh sách.");
            }

            if (str.Length > 0)
            {
                MessageBox.Show(str.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            resetText();            
            return true;
        }

        private void buttonXoa_Click(object sender, EventArgs e)
        {
            if (dataGridViewNVL.SelectedRows.Count > 0)
            {
                BUSNguyenVatLieu.del(new DTONguyenVatLieu()
                {
                    MaNVL = (string)dataGridViewNVL.CurrentRow.Cells[0].Value
                });
                reloadDatagrid();
            }
        }

        private void buttonSua_Click(object sender, EventArgs e)
        {
            var obj = new DTONguyenVatLieu()
            {
                MaLoai = (string)comboBoxMaLoai.SelectedValue,
                TenNVL = textBoxTenNVL.Text.Trim(),
                MaNVL = textBoxMaNVL.Text.Trim(),
            };
            if (check(obj))
            {                
                if (BUSNguyenVatLieu.edit(obj, old_ma) > 0)
                {
                    MessageBox.Show("Sửa dữ liệu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    reloadDatagrid();
                }
                else
                {
                    MessageBox.Show("Sửa dữ liệu thất bại", "Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            buttonSua.Enabled = false;
        }

        private void buttonThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void QLNguyenVatLieu_Load(object sender, EventArgs e)
        {
            reloadDatagrid();
        }

        private void dataGridViewNVL_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            buttonSua.Enabled = true;
            textBoxMaNVL.Text = old_ma = (string)dataGridViewNVL.CurrentRow.Cells[0].Value;
            textBoxTenNVL.Text = (string)dataGridViewNVL.CurrentRow.Cells[1].Value;
            comboBoxMaLoai.SelectedValue = dataGridViewNVL.CurrentRow.Cells[2].Value;
        }

        private void reloadDatagrid()
        {
            dataGridViewNVL.DataSource = BUSNguyenVatLieu.getAll();
            comboBoxMaLoai.DataSource = BUSLoaiNVL.getAll();
            comboBoxMaLoai.DisplayMember = "TenLoai";
            comboBoxMaLoai.ValueMember = "MaLoai";
        }

        private void buttonReset_Click(object sender, EventArgs e)
        {
            resetText();
        }

        private void resetText()
        {
            comboBoxMaLoai.ResetText();
            textBoxMaNVL.ResetText();
            textBoxTenNVL.ResetText();
        }

        private void textBoxMaNVL_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                add();
            }
        }

        private void textBoxTenNVL_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                add();
            }
        }
    }
}
